SetAxisTouchProbe
紀錄在觸發事件中的軸位置。
語法
KsCommandStatus SetAxisTouchProbe(
int Index,
McProbeTrigger TriggerInput,
BOOL WindowOnly,
double firstPosition,
double lastPosition,
double* recordedPosition
);
參數
Index [in]:軸索引。索引以零為起點;別名將影響此參數。
TriggerInput [in]:觸發信號來源。觸發可由 Index 指定;而信號來源可在 McProbeTrigger 結構中選定。
WindowOnly [in]:若設定,則只有在視窗內的值會用來觸發事件,視窗範圍為 firstPosition 與 lastPosition 之間。
firstPosition [in]:接受(正方向)觸發事件的起始位置(使用者單位),為包含在視窗的值,firstPosition 須小於 lastPosition。
lastPosition [in]:視窗的末端位置(使用者單位),為包含在視窗的值。
recordedPosition [out]:觸發事件發生的位置(使用者單位)。
回傳值
返回 KsCommandStatus 結構。
備註
- 欲使用此函式,務必使用 EnableTouchProbe 啟用位置抓取功能。
- 一個函式實例應確實代表一個位置抓取命令。
- 為避免同一位置抓取針與軸上有多個實例,McProbeTrigger 元件應使用
TouchProbeId
來擴充,獨特位置抓取命令識別可連結至 AbortCommand。 - SetAxisTouchProbe 完成後,須等待一個週期,位置抓取才生效。
- 欲了解位置抓取功能的詳細資訊,請參見 概念解說 > 位置抓取功能 (Touch Probe)。
- 當模數軸啟用時,模數值會套用至 firstPosition、lastPosition 及 recordedPosition 參數。
範例
VOID RecordPosition(INT Index, DOUBLE Velocity, McDirection Direction) {
double PosRecord = 0;
//Configure the probe
McProbeTrigger ProbeTrigger = { 0 };
ProbeTrigger.TouchProbeId = 0;
ProbeTrigger.Software = FALSE;
ProbeTrigger.IndexPulse = TRUE;
ProbeTrigger.Edge = TRUE;
ProbeTrigger.AxisSwitch = FALSE;
ProbeTrigger.Index = 0;
ProbeTrigger.Offset = 0;
KsCommandStatus probe = SetAxisTouchProbe(Index, ProbeTrigger, FALSE, 0, 0, &PosRecord);
//Start moving
MoveAxisVelocity(Index, Velocity, 36000, 36000, 3600000, Direction, mcAborting);
//Wait for the position to be recorded
probe = WaitForCommand(30, TRUE, probe);
RtPrintf("Recorded position: %d\n", (int)PosRecord);
WaitForCommand(30, TRUE, HaltAxis(Index, 36000, 3600000, mcAborting));
}
使用需求
RT | Win32 | |
---|---|---|
最低支援版本 | 4.0 | 4.0 |
標頭檔 | ksmotion.h | ksmotion.h |
程式庫 | KsApi_Rtss.lib | KsApi.lib |
參見